home *** CD-ROM | disk | FTP | other *** search
- /*
- * chars.HexDumpDA.c
- *
- */
-
- extern long fileSize;
-
- char *dp;
- char *countPtr;
-
- AppendString(s)
- register char *s;
- {
- register char i, len;
-
- *countPtr += (len = *s++);
- for (i=0; i<len; i++) *dp++ = *s++;
- }
-
- #define CharOf(c) ((((c)>=0x20)&&((c)<=0xCF))?(c):'.')
-
- char hexChar[16] = {'0','1','2','3','4','5','6','7',
- '8','9','A','B','C','D','E','F'};
-
- DrawHex6(i)
- register unsigned long i;
- {
- register int mod = 20;
- register int j;
- register unsigned long mask = 0x000FFFFF;
-
- for (j=6;j>0; --j) {
- (*countPtr)++;
- *dp++ = (hexChar[i>>mod]);
- mod -= 4;
- i &= mask;
- mask >>= 4;
- }
- }
-
- DrawHex4(i)
- register unsigned int i;
- {
- register int mod = 12;
- register int j;
- register unsigned int mask = 0x0FFF;
-
- for (j=4;j>0; --j) {
- (*countPtr)++;
- *dp++ = hexChar[i>>mod];
- mod -= 4;
- i &= mask;
- mask >>= 4;
- }
- }
-
- Four_Blanks()
- {
- (*countPtr) += 4;
- *dp++ = ' ';
- *dp++ = ' ';
- *dp++ = ' ';
- *dp++ = ' ';
- }
-
- Fill_Line(i, cptr, display)
- long i;
- register char *cptr;
- char *display;
- {
- register int k;
- register int *ptr;
- register char c;
- register long n;
-
- ptr = (int *)cptr;
-
- dp = countPtr = display;
- *dp++=0;
-
- n = i;
- if (n >= fileSize) return;
-
- DrawHex6(i);
-
- AppendString("\p: ");
- for (k=0;k<4;k++) {
- if (n>=fileSize)
- Four_Blanks();
- else
- DrawHex4(*ptr++);
- n += 2;
- (*countPtr)++;
- *dp++ = ' ';
- }
-
- (*countPtr)++;
- *dp++ = ' ';
- for (k=0;k<4;k++) {
- if (n>=fileSize)
- Four_Blanks();
- else
- DrawHex4(*ptr++);
- n += 2;
- (*countPtr)++;
- *dp++ = ' ';
- }
- AppendString("\p ");
-
- n = i;
- for (k=0; k<16; k++) {
- c = *cptr++;
- if (++n>fileSize) return;
- (*countPtr)++;
- *dp++ = CharOf(c);
- }
- }
-
-